package database;

import app.Usuario;
import java.sql.*;

/**
 * Clase UsuarioDAO:<p>
 * Interfaz con la base de datos para Usuario.
 *
 * @author jaredkurosawa
 * @author Alberto Cabrera Perez
 */
public class UsuarioDAO {
        private Statement st = null;
       
        public UsuarioDAO (Connection conn) throws SQLException {
        	this.st = conn.createStatement();
        }

        /**
         * Metodo para a�adir un nuevo usuario a la base de datos.
         *
         * @param user contiene los datos del nuevo usuario.
         */
        public boolean insertar (Usuario user, String password) throws SQLException
        {
                st.executeUpdate("INSERT INTO Usuario" +
                                                 " VALUES ('" + user.getUsuario() + "', "
                                                                      + user.getTipo() + ", " +
                                                                  "'" + user.getCorreo() + "', " +
                                                                  "'" + password + "')"
                                                );
                st.executeUpdate("INSERT INTO DatosUsuario " +
                                                 "VALUES ('" + user.getUsuario() + "', "
                                                           + "'" + user.getNombre() + "', "
                                                                 + user.getEdad() + ")"
                                                );
                return true;
        }
       
        /**
         * Metodo para actualizar los datos de un usuario
         */
        public boolean actualizar (Usuario user, String password)
        {
                try {
                        st.executeUpdate("UPDATE Usuario"
                                               + "SET password='" + password + "'"
                                               + "WHERE usuario='" + user.getUsuario() + "'"
                                         );
                } catch (SQLException e) {
                        e.printStackTrace();
                        return false;
                }
                return true;
        }

        /**
         * Metodo para eliminar a un usuario
         */
        public boolean eliminar (Usuario user)
        {
                try {
                        st.executeUpdate("DELETE " +
                                                         "FROM Usuario " +
                                                         "WHERE usuario='" + user.getUsuario() + "'"
                                                         );
                } catch (SQLException e) {
                        e.printStackTrace();
                        return false;
                }
                return true;
        }
       
        /**
         * Metodo para identificar un usuario (WIP)
         */
        public Usuario identificarse(String usuario, String password)
        {
        ResultSet rs;
           
        try {
            rs = st.executeQuery ("SELECT * " +
                                  "FROM usuario " +
                                  "WHERE usuario='" + usuario + "' AND password='" + password +"'");

            if (rs.next ())
            {
                Usuario user = new Usuario ();
       
                user.setUsuario (rs.getString ("usuario"));
                user.setTipo (rs.getInt ("tipo"));
                user.setCorreo (rs.getString ("correo"));
           
                return user;
            }
           
            return null;
        } catch (SQLException e) {
            e.printStackTrace ();
            return null;
        }
        }
}

